package cn.edu.scau.cmi.chenbingquan.client;

import cn.edu.scau.cmi.chenbingquan.singleton.Chairman;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.stage.Stage;

// 单例用户类
public class SingletonClient extends Application {
	private Pane root = new Pane();
	private TextField tf;
	private Button button;
	private ListView<Text> lv;	// 文本显示列表(使用Text来改变字体颜色)
	
	public static void main(String[] args) {
		launch(args);
	}

	@Override
	public void start(Stage stage) {
		
		root.setStyle("-fx-background-color: linear-gradient(to bottom right, ANTIQUEWHITE, CORNFLOWERBLUE)");
		root.setPrefSize(550, 450);
		
		tf = new TextField();
		tf.setPromptText("请输入主席名称");
		tf.setFocusTraversable(false);		// 不能获得焦点
		tf.setLayoutX(60);
		tf.setLayoutY(70);
		
		button = new Button("创建");
		button.setLayoutX(260);
		button.setLayoutY(70);
		
		lv = new ListView<>();
		lv.getItems().add(new Text("主席信息如下："));
		lv.setPrefSize(430, 280);
		lv.setFixedCellSize(25);
		lv.setLayoutX(60);
		lv.setLayoutY(150);
		root.getChildren().addAll(tf, button, lv);
		
		Scene scene = new Scene(root);
		stage.setScene(scene);
		stage.getIcons().add(new Image("cn/edu/scau/cmi/chenbingquan/image/窗口左上角图标.png"));
		stage.setTitle("单例模式");
		stage.setResizable(false);
		stage.show();
		
		// 事件
		button.setOnMouseClicked(e -> {
			if(tf.getText().equals("")) {		// 输入的主席名称为空
				showBuildMessage("请先输入主席名称");
			} else {
				if(Chairman.instance == null) {			// 创建主席对象前instance为空
					Chairman.getInstance(tf.getText());					// 创建主席
					Text text = new Text(Chairman.instance.toString());	// 创建有关主席信息的文本
					text.setFill(Color.DODGERBLUE);
					lv.getItems().add(text);		// 添加文本
					showBuildMessage("主席创建成功");
					
				} else {								// 创建主席对象前instance不为空
					showBuildMessage("主席只有一个");
				}
			}
			tf.setText("");
		});
	}
	
	// 显示关于创建信息的窗口
	public void showBuildMessage(String message) {
		
		VBox vBox = new VBox(60);
		vBox.setAlignment(Pos.CENTER);
		vBox.setStyle("-fx-background-color: ANTIQUEWHITE");
		vBox.setPrefSize(300, 250);
		
		Text text = new Text(message);
		text.setStyle("-fx-font-size: 25; -fx-fill: orange"); 
		
		Button button = new Button("确定");
		button.setPrefSize(60, 30);
		
		vBox.getChildren().addAll(text, button);
		
		Stage stage = new Stage();
		Scene scene = new Scene(vBox);
		stage.setScene(scene);
		stage.show();
		
		// 事件
		button.setOnMouseClicked(e -> stage.close() ); 		// 关闭窗口
	}
}
